#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017-09-28 19:50:43
# @Author  : WUQINGLONG
# @Contact : 1603763721@qq.com

# =======================================
# 优美胜于丑陋（Python 以编写优美的代码为目标）
# 明了胜于晦涩（优美的代码应当是明了的，命名规范，风格相似）
# 简洁胜于复杂（优美的代码应当是简洁的，不要有复杂的内部实现）
# 复杂胜于凌乱（如果复杂不可避免，那代码间也不能有难懂的关系，要保持接口简洁）
# 扁平胜于嵌套（优美的代码应当是扁平的，不能有太多的嵌套）
# 间隔胜于紧凑（优美的代码有适当的间隔，不要奢望一行代码解决问题）
# 可读性很重要（优美的代码是可读的）
# =======================================

"""
功能描述：
    1.学习使用线程thread
"""

from time import sleep, ctime
import sys

VERSION2 = (sys.version_info[0] == 2)
if VERSION2:
    import thread

    print('python version 2')
else:
    import _thread as thread

    print('python version 3')

loops = [4, 2]


def loop(index, seconds, lock):
    print('start loop %d at %s' % (index, ctime()))
    sleep(seconds)
    print('loop %d done at %s' % (index, ctime()))
    # 释放lock
    lock.release()


def main():
    print('starting at %s' % ctime())
    locks = list()

    # 获取lock
    index = 0
    while index < len(loops):
        index += 1
        lock = thread.allocate_lock()
        lock.acquire()
        locks.append(lock)

    # 启动线程
    for index, el in enumerate(loops):
        thread.start_new_thread(loop, (index, el, locks[index]))

    # 等待线程完成
    for el in locks:
        while el.locked():
            pass

    print('ending at %s' % ctime())


if __name__ == '__main__':
    main()
